import dayjs from 'dayjs'
import 'dayjs/locale/zh-cn'
import relativeTime from 'dayjs/plugin/relativeTime'

// 设置为中文
dayjs.locale('zh-cn')
// 加载相对时间插件
dayjs.extend(relativeTime)

/**
 * 格式化日期
 * @param {Date|String|Number} value 日期对象、日期字符串或时间戳
 * @param {String} format 格式化模板，默认为YYYY-MM-DD
 * @returns {String} 格式化后的日期字符串
 */
export const dateFormat = (value, format = 'YYYY-MM-DD') => {
  if (!value) return ''
  return dayjs(value).format(format)
}

/**
 * 相对时间，例如"几分钟前"、"几小时前"等
 * @param {Date|String|Number} value 日期对象、日期字符串或时间戳
 * @returns {String} 相对时间字符串
 */
export const relativeDate = (value) => {
  if (!value) return ''
  return dayjs(value).fromNow()
}

/**
 * 格式化血糖值
 * @param {Number} value 血糖值
 * @returns {String} 格式化后的血糖值字符串
 */
export const bloodSugarFormat = (value) => {
  if (value === undefined || value === null) return ''
  return Number(value).toFixed(1)
}

/**
 * 格式化时间，只显示时:分
 * @param {Date|String|Number} value 日期对象、日期字符串或时间戳
 * @returns {String} 格式化后的时间字符串，例如08:30
 */
export const timeFormat = (value) => {
  if (!value) return ''
  return dayjs(value).format('HH:mm')
}

/**
 * 根据血糖值判断状态
 * @param {Number} value 血糖值
 * @returns {String} 状态描述：低、正常、偏高、高
 */
export const bloodSugarStatus = (value) => {
  if (value === undefined || value === null) return ''
  
  const num = Number(value)
  
  if (num < 3.9) return '低'
  if (num >= 3.9 && num <= 6.1) return '正常'
  if (num > 6.1 && num <= 7.8) return '偏高'
  if (num > 7.8) return '高'
  
  return ''
}

/**
 * 格式化消息文本，超过指定长度则截断
 * @param {String} text 文本内容
 * @param {Number} length 最大长度，默认为20
 * @returns {String} 格式化后的文本
 */
export const textEllipsis = (text, length = 20) => {
  if (!text) return ''
  if (text.length <= length) return text
  return text.substring(0, length) + '...'
} 